package designMode.singletonPattern;

//静态内部类（线程安全，推荐）-可以实现懒加载
public class Singleton03 {
    private Singleton03() {}

    //SingletonHolder 是一个静态内部类，
    // 当外部类 Singleton被加载的时候，并不会创建 SingletonHolder 实例对象。
    // 只有当调用 getInstance() 方法时，SingletonHolder 才会被加载，
    //这个时候才会创建 instance。insance 的唯一性、创建过程的线程安全性，都由 JVM 来保证。所以，这种实现方法既保证了线程安全，又能做到延迟加载。
    private static class Holder {
        private static final Singleton03 INSTANCE = new Singleton03();
    }

    public static Singleton03 getInstance() {
        return Holder.INSTANCE;
    }
}
